
import base64

# Base64是一种任意二进制到文本字符串的编码方法，常用于在URL、Cookie、网页中传输少量二进制数据。
# Base64一般用于在HTTP协议下传输二进制数据，由于HTTP协议是文本协议，
# 所以在HTTP协议下传输二进制数据需要将二进制数据转换为字符数据。                     # 字符，不是json
# https://blog.csdn.net/qq_20545367/article/details/79538530
# https://www.jianshu.com/p/4ae3afa12b37
# 使用场景：
# 比如http协议当中的key value字段的值，必须进行URLEncode ，
# 因为一些特殊符号（等号或者空格）是有特殊含义的，造成混淆，解析失败，
# 那么需要把这些值统一处理为可见字符，传输完再解析回来。

# 因为网络传输只能传输可打印字符。什么是可打印字符？
# 在ASCII码中规定，0~31、127这33个字符属于控制字符，32~126这95个字符属于可打印字符，
# 也就是说网络传输只能传输这95个字符，不在这个范围内的字符无法传输。

# 因为一些特殊符号（等号或者空格）是有特殊含义的，造成混淆，解析失败，
# 那么需要把这些值统一处理为可见字符，传输完再解析回来。
# 如：https://blog.csdn.net/qq_20545367/article/details/79538530
# 编码：https%3A%2F%2Fblog.csdn.net%2Fqq_20545367%2Farticle%2Fdetails%2F79538530

# base64模块是用来做base64编码解码，常用于小型数据传输
# 长度为3个字节的数据经过base64编码就变成为4个字节。

encodestr = base64.b64encode('abcr34r3441'.encode('utf-8'))
decodestr = base64.b64decode(encodestr.decode('utf-8'))
print(str(encodestr,'utf-8'))
print(str(decodestr,'utf-8'))

str="https://www.baidu.com".encode("utf-8")
#对url进行编码
urlstr = base64.urlsafe_b64encode(str)
#输出url编码后的字符串
print(urlstr)
#还原编码后的字符串
print(base64.urlsafe_b64decode(urlstr))

# 参考 计算机知识——编码解码


print(base64.b64decode("NF5eMS4wLjBeXjEwMDQ1JjIuMC4wXl4xMDAwMV5eMTcxOTgyMzI5Nzk4NF5eXl5eXjE2ZTljMDY0NDY5MGI3OTg2MGE4ZjRkMjJmZmVkZmI0Xl5taWNyb3NvZnReXm1pY3Jvc29mdF5eXl5eXjEuNV5eXl4wLjVeXjFeXjI=")
)

# url编码和base64编码不同
# https://blog.csdn.net/weixin_51143604/article/details/124670887